/*
 * ABMCorpino.h
 */

#ifndef ABMCORPINO_H_
#define ABMCORPINO_H_

#include "../IndiceArbolBMas/Indice.h"
#include "../IndiceArbolBMas/ResultadoBuscar.h"
#include "../IndiceArbolBMas/ElementoHoja.h"
#include "../ArchivoDeBloques/Bloque.h"
#include <fstream>
#include <cstring>
#include <vector>

class ABMCorpino {
private:

	string nArchivo;
	unsigned int tamanioBucket;
	Indice * arbolCorpino;

public:

	/* Crea un arbol con el nombre de archivo y el tamanio de bucket
	 * pasados por parametro
	 * */
	ABMCorpino(std::string nArchivo, unsigned int tamanioBucket);

	virtual ~ABMCorpino();

	/* Si el id no existe, lo da de alta con los valores pasados por parametro y
	 * devuelve true, sino devuelve false
	 * */
	bool alta(unsigned int id, string descripcion, bool contorno, int precio,
			int idMaterial, int idBretel, int idCopa, int idFamilia, int idTintura);

	/* Si el id existe, modifica con los valores pasados por parametro y
	 * devuelve true, sino devuelve false
	 * */
	bool baja(unsigned int id);

	/* Si el id existe, modifica con los valores pasados por parametro y
	 * devuelve true, sino devuelve false
	 * */
	bool modificacion(unsigned int id, string descripcion, bool contorno,
			int precio, int idMaterial, int idBretel, int idCopa, int idFamilia, int idTintura);

	/*
	 * Si el id existe, devuelve string con los atributos separados por ;
	 * */
	string buscar(unsigned int id);

	/*
	 * Devuelve un vector con las instancias
	 * */
	vector<string> listar();
};

#endif /* ABMCORPINO_H_ */
